#ifndef VENUS_UI_CONTROLLERS_REFRACTION_EFFECT_CTRL_H
#define VENUS_UI_CONTROLLERS_REFRACTION_EFFECT_CTRL_H

#include "common/venus.h"
#include "effect_ctrl.h"

namespace venus {
class RefractionEffect;
class RefractionEffectCtrlGlut : public EffectCtrlGlut {
 public:
  RefractionEffectCtrlGlut(RefractionEffect *effect, 
                           ScalarCtrlTriple eta_ratio)
      : effect_(effect), eta_ratio_(eta_ratio) { } 
  ~RefractionEffectCtrlGlut();
  /*
   * the following methods return true, if the relevant event is handled,
   * return false otherwise, comment method to use default implementation
   */
  //virtual bool OnKeyboard(unsigned char key, int x, int y);
  virtual bool OnSpecialKey(int key, int x, int y);
  //virtual bool OnMouse(int button, int state, int x, int y);
  virtual const Effect *effect() const;
 private: 
  bool inc_eta_ratio();
  bool dec_eta_ratio();
 private:
  RefractionEffect *effect_;
  ScalarCtrlTriple eta_ratio_;
};
} // namespace venus

#endif // VENUS_UI_CONTROLLERS_REFRACTION_EFFECT_CTRL_H
